package py.com.erpone.session.dm.list;

import java.util.List;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;

import py.com.erpone.entity.dm.Rol;
import py.com.erpone.entity.dm.Usuario;



/**
 * Session Bean implementation class LaboratorioList
 */
@Stateless
@LocalBean
@Named
public class UsuarioList {

    /**
     * Default constructor. 
     */
  
    	@PersistenceContext
    	private EntityManager em;
    	
    
    	@SuppressWarnings("unchecked")
    	public List<Usuario> findAll(){
    		List<Usuario> result=(List<Usuario>)em.createNamedQuery("usuario.all").getResultList();
    		return result;
    	}
    	
    	public Usuario findById(Long id){
    		return em.find(Usuario.class, id);
    	}
    	
    	public Usuario findByNombreUsuario(String nombre){
    		return em.find(Usuario.class, nombre);
    	}

    	public String  getPasswordByNombreUsuario(Usuario usuario){
    		try {
    			return (String)em.createNamedQuery("usuario.passwordByNombreUsuario").setParameter("nombreUsuario", usuario.getNombreUsuario()).getSingleResult();
    		} catch (NoResultException e) {
    			return null;
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    	
		public List<Rol>  getUsuarioRolesByNombreUsuario(Usuario usuario){
    		try {    			
    			Usuario u = (Usuario)em.createNamedQuery("usuario.findUsuarioByNombreUsuario").setParameter("nombreUsuario", usuario.getNombreUsuario()).getSingleResult();
    			return u.getRol();
    		} catch (NoResultException e) {
    			return null;
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    	
		/*public List<Grupo>  getUsuarioGruposByNombreUsuario(Usuario usuario){
    		try {    			
    			Usuario u = (Usuario)em.createNamedQuery("usuario.findUsuarioByNombreUsuario").setParameter("nombreUsuario", usuario.getNombreUsuario()).getSingleResult();
    			return u.getGrupo();
    		} catch (NoResultException e) {
    			return null;
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return null;
    	}*/
    	
    	
    }
